<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of DistribuicaoRepository
 *
 * @author felipe
 */
class App_Model_DistribuicaoRepository {
    public function listarTodos(array $arParametro){
        $arDbDistribuicao = App_Model_Db_Distribuicao::build()->listarTodos(new Voitech_TO($arParametro));
        if(empty($arDbDistribuicao)){
            return $arDbDistribuicao;
        }
        $arDistribuicao = array();
        foreach($arDbDistribuicao as $rowDistribuicao){
            $obDistribuicaoMapper = new App_Model_DistribuicaoMapper(new App_Model_Distribuicao());
            $arDistribuicao[] = $obDistribuicaoMapper->carregar($rowDistribuicao)->getObModel();
        }
        return $arDistribuicao;
    }
    
    public function listarRelatorioProduto(array $arParametro){
        $arDbDistribuicao = App_Model_Db_Distribuicao::build()->listarRelatorioDistribuicao(new Voitech_TO($arParametro));
        if(empty($arDbDistribuicao)){
            return $arDbDistribuicao;
        }
        $arRelatorio = array();
        foreach($arDbDistribuicao as $row){            
            $obProduto = new App_Model_Produto($row->co_produto);
            $obProduto->setNoProduto($row->no_produto);
            $obCategoria = new App_Model_Categoria($row->co_categoria);
            $obCategoria->setNoCategoria($row->no_categoria);
            $obProduto->setObCategoria($obCategoria);

            $obRelatorioDistribuicao = new App_Model_RelatorioDistribuicao($obProduto,$row->nu_total_solicitado,$row->nu_total_atendido);
            $obUnidade = new App_Model_Unidade($row->co_unidade);
            $obUnidade->setNoUnidade($row->no_unidade);
            $obRelatorioDistribuicao->setObUnidade($obUnidade);
            $arRelatorio[] = $obRelatorioDistribuicao;
        }
        return $arRelatorio;
    }
    
    
    public function listarRelatorioTipoProduto(array $arParametro){
        $arDbDistribuicao = App_Model_Db_Distribuicao::build()->listarRelatorioTipoProdutoDistribuicao(new Voitech_TO($arParametro));
        if(empty($arDbDistribuicao)){
            return $arDbDistribuicao;
        }
        $arRelatorio = array();
        foreach($arDbDistribuicao as $rowDistribuicao){            
            $obProduto = new App_Model_Produto($rowDistribuicao->co_produto);
            $obProduto->setNoProduto($rowDistribuicao->no_produto);  
            $obProduto->setDtCadastro($rowDistribuicao->dt_cadastro); 
            $obCategoria = new App_Model_Categoria($rowDistribuicao->co_categoria);
            $obCategoria->setNoCategoria($rowDistribuicao->no_categoria);
            $obProduto->setObCategoria($obCategoria);  
            $obTipoProduto = new App_Model_TipoProduto($rowDistribuicao->co_tipo_produto);
            $obTipoProduto->setNoTipoProduto($rowDistribuicao->no_tipo_produto);
            $obProduto->setObTipoProduto($obTipoProduto);                                   
            $arRelatorio[] = new App_Model_RelatorioProduto($obProduto,$rowDistribuicao->nu_quantidade_produto,$rowDistribuicao->nu_quantidade_produto);
        }
        return $arRelatorio;
    }  

    public function listarRelatorioUnidadeProduto(array $arParametro){
        $arDbDistribuicao = App_Model_Db_Distribuicao::build()->listarRelatorioUnidadeProdutoDistribuicao(new Voitech_TO($arParametro));
        if(empty($arDbDistribuicao)){
            return $arDbDistribuicao;
        }
        $arRelatorio = array();
        foreach($arDbDistribuicao as $rowDistribuicao){            
            $obProduto = new App_Model_Produto($rowDistribuicao->co_produto);
            $obProduto->setNoProduto($rowDistribuicao->no_produto);  
            $obProduto->setDtCadastro($rowDistribuicao->dt_cadastro); 
            $obCategoria = new App_Model_Categoria($rowDistribuicao->co_categoria);
            $obCategoria->setNoCategoria($rowDistribuicao->no_categoria);
            $obProduto->setObCategoria($obCategoria);  
            $obUnidade = new App_Model_Unidade($rowDistribuicao->co_unidade);
            $obUnidade->setNoUnidade($rowDistribuicao->no_unidade);
            $obProduto->setObUnidade($obUnidade);             
            $obTipoProduto = new App_Model_TipoProduto($rowDistribuicao->co_tipo_produto);
            $obTipoProduto->setNoTipoProduto($rowDistribuicao->no_tipo_produto);
            $obProduto->setObTipoProduto($obTipoProduto);                                   
            $arRelatorio[] = new App_Model_RelatorioProduto($obProduto,$rowDistribuicao->nu_quantidade_produto,$rowDistribuicao->nu_quantidade_produto);
        }
        return $arRelatorio;
    } 

    public function listarRelatorioPorProduto(array $arParametro){
        $arDbDistribuicao = App_Model_Db_Distribuicao::build()->listarRelatorioPorProdutoDistribuicao(new Voitech_TO($arParametro));
        if(empty($arDbDistribuicao)){
            return $arDbDistribuicao;
        }
        $arRelatorio = array();
        foreach($arDbDistribuicao as $rowDistribuicao){            
            $obProduto = new App_Model_Produto($rowDistribuicao->co_produto);
            $obProduto->setNoProduto($rowDistribuicao->no_produto);  
            $obProduto->setDtCadastro($rowDistribuicao->dt_cadastro); 
            $obCategoria = new App_Model_Categoria($rowDistribuicao->co_categoria);
            $obCategoria->setNoCategoria($rowDistribuicao->no_categoria);
            $obProduto->setObCategoria($obCategoria);  
            $obUnidade = new App_Model_Unidade($rowDistribuicao->co_unidade);
            $obUnidade->setNoUnidade($rowDistribuicao->no_unidade);
            $obProduto->setObUnidade($obUnidade);             
            $obTipoProduto = new App_Model_TipoProduto($rowDistribuicao->co_tipo_produto);
            $obTipoProduto->setNoTipoProduto($rowDistribuicao->no_tipo_produto);
            $obProduto->setObTipoProduto($obTipoProduto);                                   
            $arRelatorio[] = new App_Model_RelatorioProduto($obProduto,$rowDistribuicao->nu_quantidade_produto,$rowDistribuicao->nu_quantidade_produto);
        }
        return $arRelatorio;
    }     
}